<?php

class WfPlantillaSolicitudCredito {
//<editor-fold defaultstate="collapsed" desc="Constantes">
  const NOMBRE_ENTIDAD = "WfPlantillaSolicitudCredito";
  const NOMBRE_ENTIDAD_ARCHIVO = "WfPlantillaSolicitudCreditoArchivo";
  
//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Campos">
  private $_id;
  private $_rut;
  private $_dv;
  private $_nombre;
  private $_paterno;
  private $_materno;
  private $_direccion;
  private $_comuna;
  private $_telefono;
  private $_celular;
  private $_email;
  private $_nombreCredito;
  private $_monto;
  private $_plazoEnMeses;
  private $_tasa;
  private $_valorCuota;
  private $_fechaInicioPago;
  private $_fechaSolicitud;
  private $_fechaAprobacion;
  private $_idFlujo;
  private $_existe;
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Propiedades">
  public function getId() { return $this->_id; }
  public function setId($value) { $this->_id = $value; }

  public function getRut() { return $this->_rut; }
  public function setRut($value) { $this->_rut = $value; }

  public function getDv() { return $this->_dv; }
  public function setDv($value) { $this->_dv = $value; }

  public function getNombre() { return $this->_nombre; }
  public function setNombre($value) { $this->_nombre = $value; }

  public function getPaterno() { return $this->_paterno; }
  public function setPaterno($value) { $this->_paterno = $value; }

  public function getMaterno() { return $this->_materno; }
  public function setMaterno($value) { $this->_materno = $value; }

  public function getDireccion() { return $this->_direccion; }
  public function setDireccion($value) { $this->_direccion = $value; }

  public function getComuna() { return $this->_comuna; }
  public function setComuna($value) { $this->_comuna = $value; }

  public function getTelefono() { return $this->_telefono; }
  public function setTelefono($value) { $this->_telefono = $value; }

  public function getCelular() { return $this->_celular; }
  public function setCelular($value) { $this->_celular = $value; }

  public function getEmail() { return $this->_email; }
  public function setEmail($value) { $this->_email = $value; }

  public function getNombreCredito() { return $this->_nombreCredito; }
  public function setNombreCredito($value) { $this->_nombreCredito = $value; }

  public function getMonto() { return $this->_monto; }
  public function setMonto($value) { $this->_monto = $value; }

  public function getPlazoEnMeses() { return $this->_plazoEnMeses; }
  public function setPlazoEnMeses($value) { $this->_plazoEnMeses = $value; }

  public function getTasa() { return $this->_tasa; }
  public function setTasa($value) { $this->_tasa = $value; }

  public function getValorCuota() { return $this->_valorCuota; }
  public function setValorCuota($value) { $this->_valorCuota = $value; }

  public function getFechaInicioPago() { return $this->_fechaInicioPago; }
  public function setFechaInicioPago($value) { $this->_fechaInicioPago = $value; }

  public function getFechaSolicitud() { return $this->_fechaSolicitud; }
  public function setFechaSolicitud($value) { $this->_fechaSolicitud = $value; }

  public function getFechaAprobacion() { return $this->_fechaAprobacion; }
  public function setFechaAprobacion($value) { $this->_fechaAprobacion = $value; }

  public function getIdFlujo() { return $this->_idFlujo; }
  public function setIdFlujo($value) { $this->_idFlujo = $value; }

  public function getExiste() { return $this->_existe; }
  public function setExiste($value) { $this->_existe = $value; }
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Metodos Publicos">
  /**
   * constructor
   * @author VSR, 09/05/2012
   */
  public function __construct() {
    try {
        $this->_id = -1;
      $this->_rut = "";
      $this->_dv = "";
      $this->_nombre = "";
      $this->_paterno = "";
      $this->_materno = "";
      $this->_direccion = "";
      $this->_comuna = "";
      $this->_telefono = "";
      $this->_celular = "";
      $this->_email = "";
      $this->_nombreCredito = "";
      $this->_monto = 0;
      $this->_plazoEnMeses = 0;
        $this->_tasa = 0;
      $this->_valorCuota = 0;
      $this->_fechaInicioPago = "";
      $this->_fechaSolicitud = "";
        $this->_fechaAprobacion = "";
        $this->_idFlujo = -1;
      $this->_existe = 0;
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * obtiene registro por su id
   * @author VSR, 09/05/2012
   */
  public function obtenerPorId($id = -1) {
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_WfPlantillaSolicitudCredito_ObtenerPorId({id});";

      //reemplaza marcas por valores reales
      $sp = str_replace("{id}", $id, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);
      $totalRegistros = count($arr);

      //si se encontraron registros entonces se asignan
      if ($totalRegistros > 0) {
        $row = $arr[0];
        $this->_id = ( is_null($row["Id"]) ) ? -1 : $row["Id"];
        $this->_rut = ( is_null($row["Rut"]) ) ? "" : $row["Rut"];
        $this->_dv = ( is_null($row["Dv"]) ) ? "" : $row["Dv"];
        $this->_nombre = ( is_null($row["Nombre"]) ) ? "" : $row["Nombre"];
        $this->_paterno = ( is_null($row["Paterno"]) ) ? "" : $row["Paterno"];
        $this->_materno = ( is_null($row["Materno"]) ) ? "" : $row["Materno"];
        $this->_direccion = ( is_null($row["Direccion"]) ) ? "" : $row["Direccion"];
        $this->_comuna = ( is_null($row["Comuna"]) ) ? "" : $row["Comuna"];
        $this->_telefono = ( is_null($row["Telefono"]) ) ? "" : $row["Telefono"];
        $this->_celular = ( is_null($row["Celular"]) ) ? "" : $row["Celular"];
        $this->_email = ( is_null($row["Email"]) ) ? "" : $row["Email"];
        $this->_nombreCredito = ( is_null($row["NombreCredito"]) ) ? "" : $row["NombreCredito"];
        $this->_monto = ( is_null($row["Monto"]) ) ? 0 : $row["Monto"];
        $this->_plazoEnMeses = ( is_null($row["PlazoEnMeses"]) ) ? 0 : $row["PlazoEnMeses"];
        $this->_tasa = ( is_null($row["Tasa"]) ) ? 0 : $row["Tasa"];
        $this->_valorCuota = ( is_null($row["ValorCuota"]) ) ? 0 : $row["ValorCuota"];
        $this->_fechaInicioPago = ( is_null($row["FechaInicioPago"]) ) ? "" : $row["FechaInicioPago"];
        $this->_fechaSolicitud = ( is_null($row["FechaSolicitud"]) ) ? "" : $row["FechaSolicitud"];
        $this->_fechaAprobacion = ( is_null($row["FechaAprobacion"]) ) ? "" : $row["FechaAprobacion"];
        $this->_idFlujo = ( is_null($row["IdFlujo"]) ) ? -1 : $row["IdFlujo"];
        $this->_existe = ($this->_id == -1) ? 0 : 1;
      } else {
        $this->_id = -1;
        $this->_rut = "";
        $this->_dv = "";
        $this->_nombre = "";
        $this->_paterno = "";
        $this->_materno = "";
        $this->_direccion = "";
        $this->_comuna = "";
        $this->_telefono = "";
        $this->_celular = "";
        $this->_email = "";
        $this->_nombreCredito = "";
        $this->_monto = 0;
        $this->_plazoEnMeses = 0;
        $this->_tasa = 0;
        $this->_valorCuota = 0;
        $this->_fechaInicioPago = "";
        $this->_fechaSolicitud = "";
        $this->_fechaAprobacion = "";
        $this->_idFlujo = -1;
        $this->_existe = 0;
      }
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * crea o actualiza un registro
   * @author VSR, 09/05/2012
   */
  public function grabar() {
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_WfPlantillaSolicitudCredito_Grabar({id},'{rut}','{dv}','{nombre}','{paterno}','{materno}','{direccion}','{comuna}','{telefono}','{celular}','{email}','{nombreCredito}',{monto},{plazoEnMeses},{tasa},{valorCuota},'{fechaInicioPago}','{fechaSolicitud}','{fechaAprobacion}',{idFlujo});";

      //reemplaza marcas por valores reales
      $sp = str_replace("{id}", $this->_id, $sp);
      $sp = str_replace("{rut}", $this->_rut, $sp);
      $sp = str_replace("{dv}", $this->_dv, $sp);
      $sp = str_replace("{nombre}", $this->_nombre, $sp);
      $sp = str_replace("{paterno}", $this->_paterno, $sp);
      $sp = str_replace("{materno}", $this->_materno, $sp);
      $sp = str_replace("{direccion}", $this->_direccion, $sp);
      $sp = str_replace("{comuna}", $this->_comuna, $sp);
      $sp = str_replace("{telefono}", $this->_telefono, $sp);
      $sp = str_replace("{celular}", $this->_celular, $sp);
      $sp = str_replace("{email}", $this->_email, $sp);
      $sp = str_replace("{nombreCredito}", $this->_nombreCredito, $sp);
      $sp = str_replace("{monto}", $this->_monto, $sp);
      $sp = str_replace("{plazoEnMeses}", $this->_plazoEnMeses, $sp);
      $sp = str_replace("{tasa}", $this->_tasa, $sp);
      $sp = str_replace("{valorCuota}", $this->_valorCuota, $sp);
      $sp = str_replace("{fechaInicioPago}", $this->_fechaInicioPago, $sp);
      $sp = str_replace("{fechaSolicitud}", $this->_fechaSolicitud, $sp);
      $sp = str_replace("{fechaAprobacion}", $this->_fechaAprobacion, $sp);
      $sp = str_replace("{idFlujo}", $this->_idFlujo, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);
      $totalRegistros = count($arr);

      //si se encontraron registros entonces se asignan
      if ($totalRegistros > 0) {
        $row = $arr[0];
        $this->_id = $row["Id"];
        $this->_existe = 1;
      } else {
        $this->_id = -1;
        $this->_existe = 0;
      }
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * elimina un registro
   * @author VSR, 09/05/2012
   */
  public function eliminar() {
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_WfPlantillaSolicitudCredito_Eliminar({id});";

      //reemplaza marcas por valores reales
      $sp = str_replace("{id}", $this->_id, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);
      $totalRegistros = count($arr);

      //si se encontraron registros entonces se asignan
      $this->_id = -1;
      $this->_existe = 0;
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * destructor
   * @author VSR, 09/05/2012
   */
  public function __destruct() {
    // destruye el objeto
  }
//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Metodos Compartidos">

  public static function obtenerDetalle($idFlujo, $entidad, $idUsuario) {
    $arr = null;
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_WfPlantillaSolicitudCredito_ObtenerDetalle({idFlujo},'{entidad}',{idUsuario});";

      //reemplaza marcas por valores reales
      $sp = str_replace("{idFlujo}", $idFlujo, $sp);
      $sp = str_replace("{entidad}", $entidad, $sp);
      $sp = str_replace("{idUsuario}", $idUsuario, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp, Bd::MULTI_QUERY);
    } catch (Exception $e) {
      $arr = null;
    }
    return $arr;
  }

  public static function grabarDatos($idFlujo, $strOpcion, $idUsuario, $strRut, $strDv, $strNombre, $strPaterno, $strMaterno, $strDireccion, 
          $strComuna, $strTelefono, $strCelular, $strEmail, $strNombreCredito, $dblMonto, $intPlazoEnMeses, $dblTaza, $dblValorCuota, 
          $strFechaInicioPago, $strFechaSolicitud) {
    $arr = null;
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_WfPlantillaSolicitudCredito_GrabarDatos({idFlujo},
        '{strOpcion}',
        {idUsuario},
        '{strRut}',
        '{strDv}',
        '{strNombre}',
        '{strPaterno}',
        '{strMaterno}',
        '{strDireccion}',
        '{strComuna}',
        '{strTelefono}',
        '{strCelular}',
        '{strEmail}',
        '{strNombreCredito}',
        {dblMonto},
        {intPlazoEnMeses},
        {dblTaza},
        {dblValorCuota},
        '{strFechaInicioPago}',
        '{strFechaSolicitud}');";

      //reemplaza marcas por valores reales
      $sp = str_replace("{idFlujo}", $idFlujo, $sp);
      $sp = str_replace("{strOpcion}", $strOpcion, $sp);
      $sp = str_replace("{idUsuario}", $idUsuario, $sp);
      $sp = str_replace("{strRut}", $strRut, $sp);
      $sp = str_replace("{strDv}", $strDv, $sp);
      $sp = str_replace("{strNombre}", $strNombre, $sp);
      $sp = str_replace("{strPaterno}", $strPaterno, $sp);
      $sp = str_replace("{strMaterno}", $strMaterno, $sp);
      $sp = str_replace("{strDireccion}", $strDireccion, $sp);
      $sp = str_replace("{strComuna}", $strComuna, $sp);
      $sp = str_replace("{strTelefono}", $strTelefono, $sp);
      $sp = str_replace("{strCelular}", $strCelular, $sp);
      $sp = str_replace("{strEmail}", $strEmail, $sp);
      $sp = str_replace("{strNombreCredito}", $strNombreCredito, $sp);
      $sp = str_replace("{dblMonto}", $dblMonto, $sp);
      $sp = str_replace("{intPlazoEnMeses}", $intPlazoEnMeses, $sp);
      $sp = str_replace("{dblTaza}", $dblTaza, $sp);
      $sp = str_replace("{dblValorCuota}", $dblValorCuota, $sp);
      $sp = str_replace("{strFechaInicioPago}", $strFechaInicioPago, $sp);
      $sp = str_replace("{strFechaSolicitud}", $strFechaSolicitud, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);
    } catch (Exception $e) {
      $arr = null;
    }
    return $arr;
  }
  
  public static function grabarFechaAprobacion($idFlujo) {
    $arr = null;
    try {
      //define llamada procedimiento almacenado
      $sp = "CALL spu_WfPlantillaSolicitudCredito_GrabarFechaAprobacion({idFlujo});";

      //reemplaza marcas por valores reales
      $sp = str_replace("{idFlujo}", $idFlujo, $sp);

      //ejecuta procedimiento
      $arr = Bd::exec($sp);
    } catch (Exception $e) {
      $arr = null;
    }
    return $arr;
  }

//</editor-fold>
}
?>

